package com;

/**
 * 第6种方式用的比较多, 但是在一些开源的框架中也有枚举的方式类实现单例
 * 因为枚举不允许被继承,同时又是线程安全的并且只能被实例化一次.
 * 但是枚举不能懒加载.对Singleton7 的主动使用, 比如调用 method() 方法则INSTANCE会被立刻实例化
 */
public enum  Singleton7 {

    INSTANCE;

    // 实例变量
    private String name = "1234";

    Singleton7(){
        System.out.println("实例会被立即初始化");
    }
    public static void method(){
        System.out.println("调用该方法会主动使用Singleton7, INSTANCE 将会被实例化");
    }

    // 调用 getInstance方法,事实上就是获取 Holder 的静态属性
    public static Singleton7 getInstance() {
        return INSTANCE;
    }
}
